home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / TextEdit.idl < prev    next >
Text File  |  1996-05-01  |  10KB  |  316 lines

  1. /*
  2.      File:        TextEdit.idl
  3.  
  4.      Contains:    TextEdit Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __TEXTEDIT_IDL__
  19. #define __TEXTEDIT_IDL__
  20.  
  21. #include <somobj.idl>
  22. #include <somcls.idl>
  23.  
  24. #ifndef __TYPES_IDL__
  25. #include <Types.idl>
  26. #endif
  27. #ifndef __QUICKDRAW_IDL__
  28. #include <Quickdraw.idl>
  29. #endif
  30. #ifndef __MIXEDMODE_IDL__
  31. #include <MixedMode.idl>
  32. #endif
  33. #ifndef __TEXTOBJECTS_IDL__
  34. #include <TextObjects.idl>
  35. #endif
  36. #ifndef __TEXTSERVICES_IDL__
  37. #include <TextServices.idl>
  38. #endif
  39.  
  40. #ifdef __SOMIDL__
  41.  
  42. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  43.  
  44.  
  45. typedef OpaquePtr                TEPtr;                        /* Substituted OpaquePtr for ``TERec*'' */
  46.  
  47. typedef OpaquePtr                TEHandle;                    /* Substituted OpaquePtr for ``TEPtr*'' */
  48.  
  49. typedef OpaquePtr HighHookProcPtr;
  50. typedef OpaquePtr HighHookUPP;
  51. typedef OpaquePtr EOLHookProcPtr;
  52. typedef OpaquePtr EOLHookUPP;
  53. typedef OpaquePtr CaretHookProcPtr;
  54. typedef OpaquePtr CaretHookUPP;
  55. typedef OpaquePtr WidthHookProcPtr;
  56. typedef OpaquePtr WidthHookUPP;
  57. typedef OpaquePtr TextWidthHookProcPtr;
  58. typedef OpaquePtr TextWidthHookUPP;
  59. typedef OpaquePtr NWidthHookProcPtr;
  60. typedef OpaquePtr NWidthHookUPP;
  61. typedef OpaquePtr DrawHookProcPtr;
  62. typedef OpaquePtr DrawHookUPP;
  63. typedef OpaquePtr HitTestHookProcPtr;
  64. typedef OpaquePtr HitTestHookUPP;
  65. typedef OpaquePtr TEFindWordProcPtr;
  66. typedef OpaquePtr TEFindWordUPP;
  67. typedef OpaquePtr TERecalcProcPtr;
  68. typedef OpaquePtr TERecalcUPP;
  69. typedef OpaquePtr TEDoTextProcPtr;
  70. typedef OpaquePtr TEDoTextUPP;
  71. typedef OpaquePtr TEClickLoopProcPtr;
  72. typedef OpaquePtr TEClickLoopUPP;
  73. typedef OpaquePtr WordBreakProcPtr;
  74. typedef OpaquePtr WordBreakUPP;
  75. /*
  76.     Important note about TEClickLoopProcPtr and WordBreakProcPtr
  77.  
  78.     At one point these were defined as returning the function result in the 
  79.     condition code Z-bit.  This was correct, in that it was what the 68K
  80.     implementation of TextEdit actually tested.  But, MixedMode had a different 
  81.     idea of what returning a boolean in the Z-bit meant.  MixedMode was setting
  82.     the Z-bit the complement of what was wanted.  
  83.     
  84.     Therefore, these ProcPtrs have been changed (back) to return the result in
  85.     register D0.  It turns out that for register based routines, 
  86.     MixedMode sets the Z-bit of the 68K emulator based on the contents 
  87.     of the return result register.  Thus we can get the Z-bit set correctly.  
  88.     
  89.     But, when TextEdit is recoded in PowerPC, if it calls a 68K ClickLoop
  90.     or WordBreak routine, register D0 had better have the result (in addition
  91.     to the Z-bit). Therefore all 68K apps should make sure their ClickLoop or
  92.     WordBreak routines set register D0 at the end.
  93. */
  94. /*
  95.     There is no function to get/set the low-mem for FindWordHook at 0x07F8.
  96.     This is because it is not a low-mem ProcPtr. That address is the entry
  97.     in the OS TrapTable for trap 0xA0FE.  You can use Get/SetTrapAddress to 
  98.     acccess it.    
  99. */
  100. /*
  101.     The following ProcPtrs cannot be written in or called from a high-level 
  102.     language without the help of mixed mode or assembly glue because they 
  103.     use the following parameter-passing conventions:
  104.  
  105.     typedef pascal void (*HighHookProcPtr)(const Rect *r, TEPtr pTE);
  106.     typedef pascal void (*CaretHookProcPtr)(const Rect *r, TEPtr pTE);
  107.  
  108.         In:
  109.             =>     r                        on stack
  110.             =>    pTE                        A3.L
  111.         Out:
  112.             none
  113.  
  114.     typedef pascal Boolean (*EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
  115.  
  116.         In:
  117.             =>     theChar                    D0.B
  118.             =>    pTE                        A3.L
  119.             =>    hTE                        A4.L
  120.         Out:
  121.             <=    Boolean                    Z bit of the CCR
  122.  
  123.     typedef pascal unsigned short (*WidthHookProcPtr)(unsigned short textLen,
  124.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  125.     typedef pascal unsigned short (*TextWidthHookProcPtr)(unsigned short textLen,
  126.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  127.  
  128.         In:
  129.             =>     textLen                    D0.W
  130.             =>    textOffset                D1.W
  131.             =>    textBufferPtr            A0.L
  132.             =>    pTE                        A3.L
  133.             =>    hTE                        A4.L
  134.         Out:
  135.             <=    unsigned short            D1.W
  136.  
  137.     typedef pascal unsigned short (*NWidthHookProcPtr)(unsigned short styleRunLen,
  138.      unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, 
  139.      short *lineStart, TEPtr pTE, TEHandle hTE);
  140.  
  141.         In:
  142.             =>     styleRunLen                D0.W
  143.             =>    styleRunOffset            D1.W
  144.             =>    slop                    D2.W (low)
  145.             =>    direction                D2.W (high)
  146.             =>    textBufferPtr            A0.L
  147.             =>    lineStart                A2.L
  148.             =>    pTE                        A3.L
  149.             =>    hTE                        A4.L
  150.         Out:
  151.             <=    unsigned short            D1.W
  152.  
  153.     typedef pascal void (*DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen,
  154.      void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  155.  
  156.         In:
  157.             =>     textOffset                D0.W
  158.             =>    drawLen                    D1.W
  159.             =>    textBufferPtr            A0.L
  160.             =>    pTE                        A3.L
  161.             =>    hTE                        A4.L
  162.         Out:
  163.             none
  164.  
  165.     typedef pascal Boolean (*HitTestHookProcPtr)(unsigned short styleRunLen,
  166.      unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr,
  167.      TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, 
  168.      Boolean *pixelInChar);
  169.  
  170.         In:
  171.             =>     styleRunLen                D0.W
  172.             =>    styleRunOffset            D1.W
  173.             =>    slop                    D2.W
  174.             =>    textBufferPtr            A0.L
  175.             =>    pTE                        A3.L
  176.             =>    hTE                        A4.L
  177.         Out:
  178.             <=    pixelWidth                D0.W (low)
  179.             <=    Boolean                    D0.W (high)
  180.             <=    charOffset                D1.W
  181.             <=    pixelInChar                D2.W
  182.  
  183.     typedef pascal void (*TEFindWordProcPtr)(unsigned short currentPos, short caller, 
  184.      TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  185.  
  186.         In:
  187.             =>     currentPos                D0.W
  188.             =>    caller                    D2.W
  189.             =>    pTE                        A3.L
  190.             =>    hTE                        A4.L
  191.         Out:
  192.             <=    wordStart                D0.W
  193.             <=    wordEnd                    D1.W
  194.  
  195.     typedef pascal void (*TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength,
  196.        unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  197.  
  198.         In:
  199.             =>     pTE                        A3.L
  200.             =>    changeLength            D7.W
  201.         Out:
  202.             <=    lineStart                D2.W
  203.             <=    firstChar                D3.W
  204.             <=    lastChar                D4.W
  205.  
  206.     typedef pascal void (*TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar,
  207.                          short selector, GrafPtr *currentGrafPort, short *charPosition);
  208.  
  209.         In:
  210.             =>     pTE                        A3.L
  211.             =>    firstChar                D3.W
  212.             =>    lastChar                D4.W
  213.             =>    selector                D7.W
  214.         Out:
  215.             <=    currentGrafPort            A0.L
  216.             <=    charPosition            D0.W
  217.             
  218. */
  219. typedef SOMLargeStruct            TERec;                        /* Derived from a struct of 32098 bytes in size */
  220.  
  221. typedef OpaquePtr                Chars;                        /* Substituted OpaquePtr for array of char of size 32001 */
  222.  
  223. typedef OpaquePtr                CharsPtr;                    /* Substituted OpaquePtr for ``char*'' */
  224.  
  225. typedef OpaquePtr                CharsHandle;                /* Substituted OpaquePtr for ``CharsPtr*'' */
  226.  
  227. typedef SOMFourByteStruct        StyleRun;                    /* Derived from a struct of 4 bytes in size */
  228.  
  229. typedef SOMLargeStruct            STElement;                    /* Derived from a struct of 18 bytes in size */
  230.  
  231. typedef OpaquePtr                TEStyleTable;                /* Substituted OpaquePtr for array of STElement of size 1777 */
  232.  
  233. typedef OpaquePtr                STPtr;                        /* Substituted OpaquePtr for ``STElement*'' */
  234.  
  235. typedef OpaquePtr                STHandle;                    /* Substituted OpaquePtr for ``STPtr*'' */
  236.  
  237. typedef SOMFourByteStruct        LHElement;                    /* Derived from a struct of 4 bytes in size */
  238.  
  239. typedef OpaquePtr                LHTable;                    /* Substituted OpaquePtr for array of LHElement of size 8001 */
  240.  
  241. typedef OpaquePtr                LHPtr;                        /* Substituted OpaquePtr for ``LHElement*'' */
  242.  
  243. typedef OpaquePtr                LHHandle;                    /* Substituted OpaquePtr for ``LHPtr*'' */
  244.  
  245. typedef SOMLargeStruct            ScrpSTElement;                /* Derived from a struct of 20 bytes in size */
  246.  
  247. /* ARRAY [0..1600] OF ScrpSTElement */
  248. typedef OpaquePtr                ScrpSTTable;                /* Substituted OpaquePtr for array of ScrpSTElement of size 1601 */
  249.  
  250. typedef SOMLargeStruct            StScrpRec;                    /* Derived from a struct of 32022 bytes in size */
  251.  
  252. typedef OpaquePtr                StScrpPtr;                    /* Substituted OpaquePtr for ``StScrpRec*'' */
  253.  
  254. typedef OpaquePtr                StScrpHandle;                /* Substituted OpaquePtr for ``StScrpPtr*'' */
  255.  
  256. typedef SOMLargeStruct            NullStRec;                    /* Derived from a struct of 8 bytes in size */
  257.  
  258. typedef OpaquePtr                NullStPtr;                    /* Substituted OpaquePtr for ``NullStRec*'' */
  259.  
  260. typedef OpaquePtr                NullStHandle;                /* Substituted OpaquePtr for ``NullStPtr*'' */
  261.  
  262. typedef SOMLargeStruct            TEStyleRec;                    /* Derived from a struct of 32024 bytes in size */
  263.  
  264. typedef OpaquePtr                TEStylePtr;                    /* Substituted OpaquePtr for ``TEStyleRec*'' */
  265.  
  266. typedef OpaquePtr                TEStyleHandle;                /* Substituted OpaquePtr for ``TEStylePtr*'' */
  267.  
  268. typedef SOMLargeStruct            TextStyle;                    /* Derived from a struct of 12 bytes in size */
  269.  
  270. typedef OpaquePtr                TextStylePtr;                /* Substituted OpaquePtr for ``TextStyle*'' */
  271.  
  272. typedef OpaquePtr                TextStyleHandle;            /* Substituted OpaquePtr for ``TextStylePtr*'' */
  273.  
  274. typedef short                    TEIntHook;
  275.  
  276. #endif
  277. #if FOR_SYSTEM8_COOPERATIVE
  278. typedef OpaquePtr TEPreUpdateProcPtr;
  279. typedef OpaquePtr TEPreUpdateUPP;
  280. typedef OpaquePtr TEPostUpdateProcPtr;
  281. typedef OpaquePtr TEPostUpdateUPP;
  282. #endif
  283. #if FOR_SYSTEM7_ONLY
  284. #endif
  285. #if OLDROUTINENAMES
  286. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  287. /* action for the old C "bit (un)set" interface, TEFeatureFlag */
  288. #endif
  289. #endif
  290. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  291. #if GENERATINGCFM
  292. #else
  293. #endif
  294. #endif
  295. #if FOR_SYSTEM8_COOPERATIVE
  296. /*
  297.     TEHandleModernAE is mostly for use by SWM to allow TSM to manage the TextEdit region
  298.     to be handled by TextEdit.
  299. */
  300. #if FOR_PTR_BASED_AE
  301. #endif
  302. #endif
  303. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  304. #if CGLUESUPPORTED
  305. #endif
  306. #endif
  307. #if OLDROUTINENAMES
  308. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  309. #endif
  310. #endif
  311.  
  312. #endif /* __SOMIDL__ */
  313.  
  314. #endif /* __TEXTEDIT_IDL__ */
  315.  
  316.